1
นามธรรมขั้นสูง: ศักยภาพของเรสต์เชิงฟังก์ชัน
AI034Lesson 13
00:00

เรสต์สมัยใหม่ใช้ประโยชน์จาก การเขียนโปรแกรมแบบฟังก์ชัน หลักการเพื่อให้บริการ การสร้างนามธรรมที่ไม่มีค่าใช้จ่าย. โดยการจัดการฟังก์ชันเป็นค่า และข้อมูลเป็นลำดับที่ไม่สามารถเปลี่ยนแปลงได้ เรสต์ทำให้สามารถสร้างการทำงานที่มีประสิทธิภาพสูงได้ การดำเนินการนำเข้า/ส่งออก โดยไม่ต้องเสียประสิทธิภาพการทำงาน

1. สภาพแวดล้อมและการปิด (Closures)

ต่างจากฟังก์ชันมาตรฐาน ฟังก์ชันแบบปิด (Closures) สามารถ จับภาพสภาพแวดล้อมของตนเอง. พวกเขาใช้ Fn, FnMutหรือ FnOnce ลักษณะเฉพาะเพื่อจัดการ การถ่ายโอนกรรมสิทธิ์ในฟังก์ชันแบบปิด, เพื่อให้มั่นใจว่าความปลอดภัยของหน่วยความจำยังคงอยู่แม้ว่าฟังก์ชันจะมีสถานะติดตัวมาด้วย

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter().map(|x| x + 1);
// v1_iter เป็นแบบดื้อรั้น และยังไม่ได้ทำงานเลย!

2. สายการประมวลผลแบบอธิบายได้

โดยการใช้ ตัวปรับแต่งอิติเตอร์เรเตอร์, นักพัฒนาสามารถแทนที่การวนซ้ำที่ซับซ้อนด้วยตรรกะที่กระชับ ฟังก์ชัน method iter_mut ช่วยให้เกิดการเปลี่ยนแปลงเชิงฟังก์ชันอย่างปลอดภัยและตรงจุด โดยที่คอมไพเลอร์จะปรับปรุงคำขอระดับสูงเหล่านี้ให้กลายเป็นรหัสแอสเซมบลีที่เทียบเคียงกับการเขียนลูปด้วยมือได้

สายการประมวลผลเชิงฟังก์ชันcontents.lines().filter(|l| l.contains(q)).collect()เครือข่ายความปลอดภัยข้อผิดพลาด [E0502]: ไม่สามารถยืม`list` เป็นแบบไม่สามารถเปลี่ยนแปลงได้เพราะ...🦀?

3. ผลการทดสอบประสิทธิภาพ

เมื่อคอมไพล์ในโหมด dev profile หรือรีลีส ฟังก์ชัน search ฟังก์ชันแสดงประสิทธิภาพได้ ผลการทดสอบทางสถิติแสดงว่า: test bench_search_iter ... bench: 19,234,900 ns/iter. นี่ยืนยันว่าการสร้างนามธรรมเหล่านี้เป็นจริง ๆ แล้วไม่มีค่าใช้จ่าย

⚠️ คำเตือนจากคอมไพเลอร์
คำเตือน: `Map` ที่ไม่ได้ใช้งาน ต้องใช้งาน ตัวอิติเตอร์เป็นแบบดื้อรั้น ไม่ทำอะไรเลยเว้นแต่จะถูกใช้โดยเมธอดเช่น collect() หรือ sum().
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>